/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Datos;

import Entidades.Autos;
import Interfaces.IAutos;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author HOUSE
 */
public class DBAutos implements IAutos {
private Connection conexion = null;
    public Connection getConection() {
       if (conexion == null) {
           try {
               Driver driver = new com.mysql.jdbc.Driver();
               DriverManager.registerDriver(driver);
               conexion = DriverManager.getConnection("jdbc:mysql://localhost:3306/automotora", "root", "pass1234");
              
           } catch (SQLException ex) {
               ex.printStackTrace();
               Logger.getLogger(DBAutos.class.getName()).log(Level.SEVERE, null, ex);

           }
       }
       return conexion;
   }

    @Override
    public boolean IngresarAutos(Autos nodo) {
       try {
           CallableStatement statement;
           statement = getConection().prepareCall("{call IngresaAutos (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}");         
           statement.setInt(1, nodo.getNroUnidad());
           statement.setInt(2, nodo.getNroChasis());
           statement.setInt(3, nodo.getNroMotor());
           statement.setInt(4,nodo.getIDMarca());
           statement.setInt(5, nodo.getIDModelo());
           statement.setString(6, nodo.getAño());
           statement.setInt(7,nodo.getIDColor());
           statement.setString(8,nodo.getFechaDeIngresado());
           statement.setInt(9, nodo.getCantidadPasajeros());
           statement.setInt(10, nodo.getIDImportador());
           statement.setInt(11, nodo.getPrecio());
           statement.setInt(12,nodo.getPorcentajeGanancia());
           statement.setBoolean(13,nodo.getDisponibilidad());
           statement.setInt(14,nodo.getKmsCompra());
           statement.setBoolean(15,nodo.getAbs());
           statement.setBoolean(16,nodo.getAirbagsChofer());
           statement.setBoolean(17,nodo.getAirbagsAcompañante());
           statement.setInt(18,nodo.getCantPuertas());
           statement.setInt(19,nodo.getCantRuedas());
           statement.setString(20,nodo.getMarcaRuedas());
           statement.setBoolean(21,nodo.getCalefaccion());
           
         
           statement.executeUpdate();
        }catch (Exception ex){
            System.out.println("error al agregar autos");
            ex.printStackTrace();
            return false;
        }
        return true;

    }

    @Override
    public boolean ModificarAutos(Autos nodo) {
        try {
           CallableStatement statement;
           statement = getConection().prepareCall("{call ModificaAutos (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}");         
           statement.setInt(1, nodo.getNroUnidad());
           statement.setInt(2, nodo.getNroChasis());
           statement.setInt(3, nodo.getNroMotor());
           statement.setInt(4,nodo.getIDMarca());
           statement.setInt(5, nodo.getIDModelo());
           statement.setString(6, nodo.getAño());
           statement.setInt(7,nodo.getIDColor());
           statement.setString(8,nodo.getFechaDeIngresado());
           statement.setInt(9, nodo.getCantidadPasajeros());
           statement.setInt(10, nodo.getIDImportador());
           statement.setInt(11, nodo.getPrecio());
           statement.setInt(12,nodo.getPorcentajeGanancia());
           statement.setBoolean(13,nodo.getDisponibilidad());
           statement.setInt(14,nodo.getKmsCompra());
           statement.setBoolean(15,nodo.getAbs());
           statement.setBoolean(16,nodo.getAirbagsChofer());
           statement.setBoolean(17,nodo.getAirbagsAcompañante());
           statement.setInt(18,nodo.getCantPuertas());
           statement.setInt(19,nodo.getCantRuedas());
           statement.setString(20,nodo.getMarcaRuedas());
           statement.setBoolean(21,nodo.getCalefaccion());
           
         
           statement.executeUpdate();
        }catch (Exception ex){
            System.out.println("error al modificar autos");
            ex.printStackTrace();
            return false;
        }
        return true;

    }

    @Override
    public boolean EliminarAutos(int NroUnidad) {
        try {
           CallableStatement statement;
           statement = getConection().prepareCall("{call EliminaAutos (?)}");         
           statement.setInt(1, NroUnidad);
           statement.executeUpdate();
        }catch (Exception ex){
            System.out.println("error al eliminar autos");
           
            return false;
        }
        return true;

    }

    @Override
    public ArrayList<Autos> ListaAutos() {
        ArrayList<Autos> per = new ArrayList<Autos>();
       try {
           CallableStatement statement = getConection().prepareCall("{call ListaAutos}");
           ResultSet resultSet = statement.executeQuery();
           while (resultSet.next()) {
               Autos reglam= new Autos();
              
               reglam.setNroUnidad(resultSet.getInt(1));
               reglam.setNroChasis(resultSet.getInt(2));
               reglam.setNroMotor(resultSet.getInt(3));
               reglam.setIDMarca(resultSet.getInt(4));
               reglam.setIDModelo(resultSet.getInt(5));
               reglam.setAño(resultSet.getString(6));
               reglam.setIDColor(resultSet.getInt(7));
               reglam.setFechaDeIngresado(resultSet.getString(8));
               reglam.setCantidadPasajeros(resultSet.getInt(9));
               reglam.setIDImportador(resultSet.getInt(10));
               reglam.setPrecio(resultSet.getInt(11));
               reglam.setPorcentajeGanancia(resultSet.getInt(12));
               reglam.setDisponibilidad(resultSet.getBoolean(13));
               reglam.setKmsCompra(resultSet.getInt(14));
               reglam.setAbs(resultSet.getBoolean(15));
               reglam.setAirbagsChofer(resultSet.getBoolean(16));
               reglam.setAirbagsAcompañante(resultSet.getBoolean(17));
               reglam.setCantPuertas(resultSet.getInt(18));
               reglam.setCantRuedas(resultSet.getInt(19));
               reglam.setMarcaRuedas(resultSet.getString(20));
               reglam.setCalefaccion(resultSet.getBoolean(21));
               per.add(reglam);
              
           }
           return per;
       } catch (SQLException ex) {
           ex.printStackTrace();
           return null;
       }

    }

    @Override
    public DefaultTableModel ModeloAutos() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
    
}
